
import drugDataUp from '/src/static/analysisData/drug_wald_Up.json';
import drugDataNo from '/src/static/analysisData/drug_wald_No.json';
import drugDataDown from '/src/static/analysisData/drug_wald_Down.json';
import { createScatterSeries, formatDecimal } from './utils';


const drugWaldOption = {
    tooltip: {
        trigger: 'item',
        formatter: function (params: { value: string[]; }) {
            let tooltipContent = [];

            tooltipContent.push('Drug: ' + params.value[3]);
            tooltipContent.push('TumorType: ' + params.value[4]);
            tooltipContent.push('P.Value_Single: ' + formatDecimal('', '', params.value[5]));
            tooltipContent.push('P.Value_Pancancer: ' + formatDecimal('', '', params.value[6]));
            tooltipContent.push('logFC_Single: ' + formatDecimal('', '', params.value[7]));
            tooltipContent.push('logFC_Pancancer: ' + formatDecimal('', '', params.value[8]));
    
            // 仅在有数据时添加 repurposing_target、MOA 和 IDs
            if (params.value[10]) {
                tooltipContent.push('repurposing_target: ' + params.value[10]);
            }
            if (params.value[11]) {
                tooltipContent.push('MOA: ' + params.value[11]);
            }
            if (params.value[12]) {
                tooltipContent.push('IDs: ' + params.value[12]);
            }
    
            // 使用 join() 将内容数组转换为字符串并返回
            return tooltipContent.join('<br>');
        }
    },
    xAxis: {
        type: 'value',
        name: 'p−value (most significant tumor type)',
        nameLocation: 'middle',  // Positioning the name in the middle of the axis
        nameTextStyle: {
            padding: [5, 0, 0, 0],  // Adjust padding to bring the name closer to the axis
            fontSize: 24,
            color: 'black',
            align: 'center',  // Aligns the name text to the right side (closer to the axis line)
        },
        splitLine: {
            show: false  // 隐藏 x 轴的网格线
        },
        axisLabel: {
            formatter: function (value: any) {
                // Apply inverse transformation for display
                let transformedValue = Math.pow(10, -value + 0.01); // Assuming you used log transformation
                if (value === 0.5) { 
                    return 1
                }
                if (transformedValue >= 0.01) {
                    return transformedValue.toFixed(2).replace(/\.?0+$/, ''); // 去除多余的小数部分
                } else if (transformedValue >= 0.001) {
                    return transformedValue.toFixed(3).replace(/\.?0+$/, ''); // 保留三位小数，并去掉无效的 0
                } else {
                    // 如果数字小于 0.001，使用科学计数法
                    return transformedValue.toExponential(1); // 科学计数法，保留一位小数
                }
            },
            customValues: [0.5, 1, 2, 3, 4, 5]
        },
        axisLine: {
            show: true,
            lineStyle: {
                color: 'black', // 设置坐标轴颜色
                width: 2 // 设置坐标轴宽度
            }
        },
        min: 0,
        max: 5.5,
        interval: 0.5,
    },
    yAxis: {
        type: 'value',
        name: 'p−value (Pancancer cohort)',
        nameLocation: 'middle',  // Positioning the name in the middle of the axis
        nameTextStyle: {
            padding: [5, 0, 35, 0],  // Adjust padding to bring the name closer to the axis
            fontSize: 24,
            color: 'black',
            align: 'center',  // Aligns the name text to the right side (closer to the axis line)
        },
        splitLine: {
            show: false  // 隐藏 x 轴的网格线
        },
        axisLabel: {
            formatter: function (value:any) {
                // Apply inverse transformation for display
                let transformedValue = Math.pow(10, -value + 0.5)
                if (transformedValue < 1e-4) {
                    return transformedValue.toExponential(1); // 保留两位小数的科学计数法
                } else if (value === 3) { // 如果是 customValues 的 3，显示特定格式
                    return transformedValue.toExponential(1); // 或者其他适合的格式
                }
                return transformedValue > 0.00001 ? transformedValue : 0;
            },
            customValues: [0.5, 1.5, 2.5, 3.5, 4.5]
        },
        axisLine: {
            show: true,
            lineStyle: {
                color: 'black', // 设置坐标轴颜色
                width: 2 // 设置坐标轴宽度
            },
        },
        min: 0,
        max: 4.5,
        interval: 0.5,
    },
    legend: {
        data: ['Up', 'Down', 'No'],  // 图例名称
        orient: 'vertical',
        left: 'right',       // 放置在容器的右侧
        top: 'middle',       // 垂直居中
        align: 'left'
    },
    color: ['#E41A1C', '#377EB8', '#BFBFBF'],
    series: [
        createScatterSeries(drugDataDown, 'Down', 'Down', '#377EB8', 'drug', false),
        createScatterSeries(drugDataUp, 'Up', 'Up', '#E41A1C', 'drug', false),
        createScatterSeries(drugDataNo, 'No', 'No', '#BFBFBF', 'drug', false)
    ]
};

export default drugWaldOption